// 生成函数的应用
// 在许多不同种类的食物中选出 n 个，每种食物的限制如下：
// 承德汉堡：偶数个
// 可乐：0 个或 1 个
// 鸡腿：0 个，1 个或 2 个
// 蜜桃多：奇数个
// 鸡块：4 的倍数个
// 包子：0 个，1 个，2 个或 3 个
// 土豆片炒肉：不超过一个。
// 面包：3 的倍数个
// 每种食物都是以「个」为单位，只要总数加起来是 n 就算一种方案。对于给出的 n 你需要计算出方案数，对 10007 取模。
// 测试链接 ：https://darkbzoj.cc/problem/3028
// 相关帖子 ：https://www.cnblogs.com/dx123/p/16899614.html
// 相关帖子 ：https://oi-wiki.org/math/poly/ogf/#%E5%BA%94%E7%94%A8
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

const int P = 10007;
char s[510];

int main()
{
    scanf("%s", s);
    int n = 0, len = strlen(s);
    for(int i = 0; i < len; ++i) n = (n * 10 + s[i] - '0') % P;
    // 1668 是 6 (mod 10007) 的乘法逆元
    // C(n+2, 3) = (n+2)*(n+1)*n/6
    int ans = n * (n + 1) % P * (n + 2) % P * 1668 % P;
    printf("%d\n", ans);

    return 0;
}